IAM Access Analyzerでルールを作成し自動的にアーカイブする #reinvent
コンニチハ、千葉です。
IAM Access Analyzerにてアーカイブルールを作成して自動的にリソースをアーカイブしてみます。 IAM Access Analyzerの概要につきましては以下を参照ください。
[速報] AWS Identity and Access Management Access Analyzerがリリースされました! #reinvent
アーカイブルールとは、意図したアクセス設定になっているかのルールを定義し、それに従い自動的にアーカイブ済みにします。逆にアーカイブされずに残ったリソースは、意図していない定義とみなすことができます。手動でもアーカイブできますが、今回はアーカイブルールを作成して自動でアーカイブしてみます。
前提知識
- スキャンの実施タイミング
- 初期スキャン以降、24時間ごとに自動的にスキャンが実行される
- IAMロールに適用されたポリシーの変更など、結果を解決するための変更を行った後、Access Analyzerはリソースを再度スキャン(スキャンは最大30分かかることがある)
- 各リソースに対しオンデマンドでスキャンを実行できる(リソースごとに個別実行)
- IAM Access Analyzerの結果の見方
- アクティブ:ルールに適合していないリスト
- アーカイブ:ルールに適合し自動的にアーカイブされる。また各リソースに対し、手動でのアーカイブも可能。
- 解決済み:アクティブなリソースに対し変更を加え、定義したルールに合致したリソース。またはリソースを削除した場合。
やってみたパターン1
- 「IAMロール信頼関係で特定のAWSアカウントからアクセス許可されているもの」のアーカイブルールを作成する(これを正しい設定とする)
- 「特定のAWSアカウントからアクセス許可」に合致するようにIAMロールを作成する(アーカイブに表示されるはず)
で、動作を確認してみたいと思います。まずは、アーカイブルールを作成します。IAMの画面からアーカイブルールを選択します。
ルールはこんな感じで指定します。特定のAWSアカウントからの信頼関係が許可されている場合OKとします。
では、特定のAWSアカウントからアクセス許可するIAMロールを作成してみます。ロール作成時に、ルールに指定したアカウントIDと同じものを入力します。
それでは、結果をみてみましょう。アーカイブ済み一覧に作成したIAMロールが表示されました。ルールに適合したと判断されました。
やってみたパターン2
こちらのパターンは、ルールに適合しないIAMロールを作成し、後からルールに適合するように変更した場合です。どのような挙動になるかみてみます。
- 「IAMロール信頼関係で特定のAWSアカウントからアクセス許可されているもの」のアーカイブルールを作成する(これを正しい設定とする)
- 「特定のAWSアカウントからアクセス許可」に合致しないIAMロールを作成する(アクティブに表示される)
- 「特定のAWSアカウントからアクセス許可」に合致するようにIAMロールを作成する(解決済みに表示される)
1は先ほど作成したルールを利用するのでここでの手順は省略します。ルールで指定したAWSアカウントIDと別のIDを入力し、ルールに適合しないIAMロールを作成します。
結果を見ると、アクティブ側に表示されました。
次に信頼関係を修正し、ルールに合致するアカウントIDを入力し、結果を確認します。
解決済みに表示されました!
さいごに
アーカイブルールについて挙動を作成しました。検証する前はイメージが付きにくかったのですが、検証したことでサービスの利用方法が理解できました。ルールに合致しないリソースをEventBrigedで連携し通知も可能です。こちらと合わせて監視すると良さそうです。
参考
https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-archive-rules.html